package cn.vshare.dao;

import cn.vshare.entity.Reply;
import cn.vshare.entity.User;
import org.apache.ibatis.annotations.Param;

import java.util.List;
/*
                           _ooOoo_
                          o8888888o
                          88" . "88
                          (| -_- |)
                          O\  =  /O
                       ____/`---'\____
                     .'  \\|     |//  `.
                    /  \\|||  :  |||//  \
                   /  _||||| -:- |||||-  \
                   |   | \\\  -  /// |   |
                   | \_|  ''\---/''  |   |
                   \  .-\__  `-`  ___/-. /
                 ___`. .'  /--.--\  `. . __
              ."" '<  `.___\_<|>_/___.'  >'"".
             | | :  `- \`.;`\ _ /`;.`/ - ` : | |
             \  \ `-.   \_ __\ /__ _/   .-` /  /
        ======`-.____`-.___\_____/___.-`____.-'======
                           `=---='
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                 佛祖保佑       永无BUG
        */

/**
 * @Auther: 张恒
 * @Date: 2018/9/17 19:37
 * @Description:回复评论的接口
 */
public interface ReplyDao {
    /* *
     * 功能描述:获取评论对应的reply
     *
     * @param commentId
     * @return list
     * @auther 张恒
     * @date 2018/9/17 19:47*/

    List<Reply> queryAllReply(String commentId);

    /**
     * 功能描述:添加回复
     *
     * @param reply     回复本体
     * @return boolean
     * @auther 张恒
     * @date 2018/9/17 20:11
     */
    boolean addReply(Reply reply);

    /**
     * 同样提供三种方式的删除
     */
    /**
     * 功能描述:方案一:直接删除
     *
     * @param replyId
     * @return boolean
     * @auther Administrator
     * @date 2018/9/17 20:14
     */
    boolean delReply(String replyId);

    /**
     * 功能描述: 方案二:替换回复内容
     *
     * @param replyId
     * @return boolean
     * @auther 张恒
     * @date 2018/9/17 20:21
     */
    boolean updateReplyAuditStatus(@Param("replyId") String replyId, @Param("auditStatus") Integer auditStatus);

    /**
     * 功能描述:方案三:修改回复内容为"该评论已删除"
     *
     * @param replyId
     * @return boolean
     * @auther 张恒
     * @date 2018/9/17 20:15
     */
    boolean updateReplyByInform(String replyId);

    /**
     * 功能描述: 点赞回复
     *
     * @param
     * @return boolean
     * @auther Administrator
     * @date 2018/9/17 20:22
     */
    boolean updateReplyAddLike(@Param("id") String id, @Param("user") User user, @Param("replyId") String replyId);

    /**
     * 功能描述:取消点赞
     *
     * @param user
     * @param replyId
     * @return boolean
     * @auther Administrator
     * @date 2018/9/17 20:24
     */
    boolean updateReplyCancelLike(@Param("user") User user, @Param("replyId") String replyId);

    /**
     *
     * 功能描述: 获得回复
     *
     * @param replyId
     * @return Reply
     * @auther 张恒
     * @date 2018/9/18 10:19
     */
    Reply queryReplyById(String replyId);
    /**
     *
     * 功能描述:点赞时或者取消赞时更新parse_count
     *
     * @param replyId
     * @param parseCount
     * @return boolean
     * @auther 张恒
     * @date 2018/9/18 17:23
     */
     boolean updateReplyParseCount(@Param("replyId") String replyId, @Param("parseCount") Integer parseCount);


    /**
     *
     * 功能描述:获得中间表中点赞的总数
     *
     * @param replyId
     * @return Integer
     * @auther Administrator
     * @date 2018/9/18 17:26
     */
    Integer queryLikeCount(String replyId);

    /**
     *
     * 功能描述:查询用户是否点过赞
     *
     * @param
     * @return
     * @auther Administrator
     * @date 2018/9/26 19:48
     */
    int queryReplyIfLike(@Param("replyId") String replyId, @Param("user") User user);


}
